package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import negocio.Domicilio;
import negocio.Medicion;
import negocio.UsuarioIndustrial;
import negocio.UsuarioResidencial;

public class UsuarioIndustrialDao {
	private static UsuarioIndustrialDao instancia;
	
	
	public static UsuarioIndustrialDao getInstancia(){
		if(instancia==null){
			instancia=new UsuarioIndustrialDao();
		}
		return instancia;
	}
	
	public void guardarUsuarioI(UsuarioIndustrial ind){
		Connection con=DataSource.obtenerConexion();
		
		
		try{
			String query="insert UsuarioIndustrial values(?,?,?,?,?,?,?,?,?,?)";
			PreparedStatement ps=con.prepareStatement(query);
			ps.setString(1, ind.getRazonSocial());
			ps.setInt(2, ind.getCuit());
			ps.setInt(3, ind.getIngresosBrutos());
			ps.setString(4, ind.getDomicilio().getCalle());
			ps.setInt(5, ind.getDomicilio().getAltura());
			ps.setInt(6, ind.getDomicilio().getPiso());
			ps.setString(7, ind.getDomicilio().getDepto());
			ps.setString(8, ind.getDomicilio().getCodigoPostal());
			ps.setString(9, ind.getDomicilio().getLocalidad());
			ps.setString(10, ind.getDomicilio().getProvincia());
			
			ps.execute();
			
			DataSource.cerrarConexion();
		}catch (Exception e) {
			System.out.println("Error en insert usuario residencial>>   "+e.getMessage());
		
		}
		
	}
	
	
	public Vector<UsuarioIndustrial> obtenerUsuarioIndustriales(){
		Connection con=DataSource.obtenerConexion();
		Vector<UsuarioIndustrial> usuarios = new Vector<UsuarioIndustrial>();
		try{
			String query="Select * from UsuarioIndustrial";
			Statement st=con.createStatement();
			ResultSet rs=st.executeQuery(query);
	
			while (rs.next()){
				UsuarioIndustrial u=new UsuarioIndustrial();
				u.setRazonSocial(rs.getString("razonSocial"));
				u.setCuit(rs.getInt("cuit"));
				u.setIngresosBrutos(rs.getInt("ingresosBrutos"));
				
				Domicilio dom=new Domicilio();
				dom.setCalle(rs.getString("calle"));
				dom.setAltura(rs.getInt("altura"));
				dom.setPiso(rs.getInt("piso"));
				dom.setDepto(rs.getString("depto"));
				dom.setCodigoPostal(rs.getString("codigoPostal"));
				dom.setLocalidad(rs.getString("localidad"));
				dom.setProvincia(rs.getString("provincia"));
				
				u.setDomicilio(dom);
				u.setMediciones(MedicionDao.getInstancia().obtenerMedicionesPorId(rs.getInt("cuit")));
				usuarios.add(u);
			}
	
			
		}catch(Exception e){
			System.out.println("Error al obtener usuarios residenciales>>   "+e.getMessage());
		}finally{
			DataSource.cerrarConexion();
		}
		return usuarios;
	}
	
	
	public UsuarioIndustrial obtenerUsuarioIndustrialPorCuit(int nroCuit){
		Connection con=DataSource.obtenerConexion();
		UsuarioIndustrial u=new UsuarioIndustrial();
		ResultSet rs=null;
		try{
			String query="select * from UsuarioIndustrial where cuit=?";
			PreparedStatement ps=con.prepareStatement(query);
			ps.setInt(1, nroCuit);
			rs=ps.executeQuery();
			while (rs.next()){
				
				u.setRazonSocial(rs.getString("razonSocial"));
				u.setCuit(rs.getInt("cuit"));
				u.setIngresosBrutos(rs.getInt("ingresosBrutos"));
				
				Domicilio dom=new Domicilio();
				dom.setCalle(rs.getString("calle"));
				dom.setAltura(rs.getInt("altura"));
				dom.setPiso(rs.getInt("piso"));
				dom.setDepto(rs.getString("depto"));
				dom.setCodigoPostal(rs.getString("codigoPostal"));
				dom.setLocalidad(rs.getString("localidad"));
				dom.setProvincia(rs.getString("provincia"));
				
				u.setDomicilio(dom);
			}
	
			
		}catch(Exception e){
			System.out.println("Error al obtener usuarios residenciales>>   "+e.getMessage());
		}finally{
			DataSource.cerrarConexion();
		}
		return u;
	}
	


}
